package org.eda.actividad4;

import org.eda.actividad4.Candidato;
//import org.eda.actividad3.Distrito;
//import org.eda.actividad3.ListaCandidatos;
//import org.eda.actividad3.ListaDistritos;
//import org.eda.actividad3.Partido;

public class Candidato implements Comparable<Candidato>
{
	private String nombre;
	private String apellido;
//	private Partido partido;
	private ListaCandidatos listaAmigos;
//	private ListaDistritos listaDistritos;
	private int puntuacion;
	
	public Candidato(String pApellido, String pNombre)
	{
		this.nombre = pNombre;
		this.apellido = pApellido;
		this.puntuacion = 0;
//		this.partido = new Partido(null);
		this.listaAmigos = new ListaCandidatos();
//		this.listaDistritos = new ListaDistritos();
	}

	public String getNombre() 
	{
		return this.nombre;
	}

	public String getApellido() 
	{
		return this.apellido;
	}
	
	/*public Partido getPartido()
	{
		return this.partido;
	}*/
	
	public ListaCandidatos getListaAmigos()
	{
		return this.listaAmigos;
	}
	
	/*public ListaDistritos getListaDistritos()
	{
		return this.listaDistritos;
	}*/
	
	public int getPuntuacion() 
	{
		return this.puntuacion;
	}

	public void setPuntuacion(int pPuntuacion) 
	{
		this.puntuacion = pPuntuacion;
	}
	
	public Candidato buscarCandidato(Candidato pCandidato)
	{
		return this.getListaAmigos().buscarCandidato(pCandidato.getApellido(), pCandidato.getNombre());
	}
	
	public void anadirCandidato(Candidato pCandidato)
	{
		Candidato cand = this.getListaAmigos().buscarCandidato(pCandidato.getApellido(), pCandidato.getNombre());
		if(cand == null)
		{
			this.getListaAmigos().anadirCandidato(pCandidato);
		}
	}
	
	public void eliminarCandidato(Candidato pCandidato)
	{
		Candidato cand = this.getListaAmigos().buscarCandidato(pCandidato.getApellido(), pCandidato.getNombre());
		if(cand != null)
		{
			this.getListaAmigos().eliminarCandidato(pCandidato);
		}
	}
	
	/*public Distrito buscarDistrito(Distrito pDistrito)
	{
		return this.getListaDistritos().buscarDistrito(pDistrito.getIdDistrito());
	}
	
	public void anadirDistrito(Distrito pDistrito)
	{
		Distrito dist = this.getListaDistritos().buscarDistrito(pDistrito.getIdDistrito());
		if(dist == null)
		{
			this.getListaDistritos().anadirDistrito(pDistrito);
		}
	}
	
	public void eliminarDistrito(Distrito pDistrito)
    {
		Distrito dist = this.getListaDistritos().buscarDistrito(pDistrito.getIdDistrito());
		if(dist != null)
		{
			this.getListaDistritos().eliminarDistrito(pDistrito);
		}
    }*/
	
	public int hashCode() 
	{
		final int prime = 31;
		int result = 1;
		result = prime * result + ((apellido == null) ? 0 : apellido.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		return result;
	}

	public int compareTo(Candidato pCandidato) {
		return apellido.compareTo(pCandidato.getApellido());
	}

	/*public int compareTo(Candidato pCandidato) 
	{
		Comparable<Candidato> comp = (Comparable<Candidato>) pCandidato;
		if(this.getApellido() == pCandidato.getApellido() && this.getNombre() == pCandidato.getNombre())
		{
			return 0;
		}
		else
		{
			if(comp.compareTo(this) == 1)
			{
				return -1;
			}
			else
			{
				return 1;
			}		
		}
	}*/	
}
